package csu.web.credit_bank.service;

import csu.web.credit_bank.pojo.CourseSelection;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface CourseSelectionsService extends IService<CourseSelection> {

    /**
     * [Create] 用户选修一门课程，创建一条新的选课记录.
     * @param userId 用户ID.
     * @param courseId 课程ID.
     * @return 创建的选课记录.
     */
    CourseSelection createSelection(String userId, String courseId);

    /**
     * [Read] 获取一个用户的所有选课记录.
     * @param userId 用户ID.
     * @return 选课记录列表.
     */
    List<CourseSelection> getSelectionsByUserId(String userId);

    /**
     * [Read] 获取单条选课记录.
     * @param userId 用户ID.
     * @param courseId 课程ID.
     * @return 选课记录对象, 如果不存在则返回null.
     */
    CourseSelection getSelection(String userId, String courseId);

    /**
     * [Update] 更新一条选课记录. (业务场景较少，按规范提供).
     * @param selection 包含更新信息的选课对象.
     * @return 更新后的选课对象.
     */
    CourseSelection updateSelection(CourseSelection selection);

    /**
     * [Delete] 用户取消选修一门课程.
     * @param userId 用户ID.
     * @param courseId 课程ID.
     * @return 如果删除成功，返回true.
     */
    boolean deleteSelection(String userId, String courseId);

    /**
     * [新增业务方法] 根据课程ID获取所有选课记录.
     * @param courseId 课程ID.
     * @return 选课记录列表.
     */
    List<CourseSelection> getSelectionsByCourseId(String courseId);
}
